---
title: How to publish an update
sidebar_title: Publish an update
description: Learn how to publish an update using EAS Update.
---

import { LayersTwo02Icon } from '@expo/styleguide-icons/outline/LayersTwo02Icon';

import { BoxLink } from '~/ui/components/BoxLink';
import { Terminal } from '~/ui/components/Snippet';

Publishing an update allows:

- Fixing bugs and quickly updating non-native parts of a project instead of creating a new build
- [Sharing a preview version of an app](/review/overview/) using internal distribution

This guide explains the steps required to publish an update, how it works, and methods to test it.

## Publish an update

To publish an update with changes from your project, you can use the `eas update` command, and specify a name for the `branch` and a `message` to describe the update:

<Terminal cmd={['$ eas update --branch [branch-name] --message "[message]"']} />

### How does publishing an update work

When you publish an update with the `eas update` command, it generates a new update bundle and uploads it to the EAS servers. The `branch` name is used to identify the update and is associated with the uploaded bundle. It is similar to how Git commit works, where every commit is associated with a Git branch.

For example, you want to publish an update for the [`development` build profile](/build/eas-json/#build-profiles). You can use it as the branch name to associate the update with its build profile. When the app requests an update, it will download the update associated with the `development` branch.

For this example, the command to publish an update with the `development` branch and a message is:

<Terminal cmd={['$ eas update --branch development --message "Fixes typo"']} />

The above command runs `npx expo export` behind the scenes to generate a **dist** directory and create a local update bundle. This update bundle is uploaded to EAS Update servers.

<BoxLink
  title="In-depth guide on how EAS Update works"
  description="Dive deep and learn how EAS Update works."
  href="/eas-update/how-it-works/"
  Icon={LayersTwo02Icon}
/>

## Testing a published update

After the update is uploaded to EAS Update, you can use one of the following methods to test the update:

- Use the Extensions tab in a [development build](/eas-update/expo-dev-client/) to load the update.
- Use [Expo Orbit](/review/with-orbit/) to install and launch the update in a development build.
- Implement a custom strategy with [Updates API](/versions/latest/sdk/updates/) and [app config](/versions/latest/config/app/#updates) to load updates in the app programmatically.
- Manually test the update by force closing and reopening a release build of your app up to two times to download and apply the update.

> Updates for non-development builds (preview or production) are automatically downloaded to the device when the app starts up and makes a request for any new updates.

## Troubleshooting

If your app is not updating as expected, see the following debugging guides for techniques to validate your configuration:

<BoxLink
  title="Debug EAS Update"
  description="Learn how to troubleshoot and debug an EAS Update."
  href="/eas-update/debug/"
  Icon={LayersTwo02Icon}
/>

<BoxLink
  title="Advanced EAS Update Debugging"
  description="Learn advanced strategies to debug an EAS Update."
  href="/eas-update/debug-advanced/"
  Icon={LayersTwo02Icon}
/>
